<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .box {
            width: 400px;
            height: 300px;
            border: solid 1px black;
            margin: 0 auto;
        }

        .box ul {
            margin: 0;
            padding: 0;
            list-style: none;
            display: flex;
            background: #eee;
            height: 30px;
            line-height: 30px;
        }

        .box ul li {
            flex: 1;
            border-left: solid 1px #fff;
            border-right: solid 1px #fff;
            text-align: center;
            cursor: pointer;
        }

        .box ul li.active {
            background: red;
            color: #fff;
        }

        .box .cont > div {
            height: 270px;
            display: none;
        }

        .phone {
            background: #399;
        }

        .computer {
            background: #393;
        }

        .bike {
            background: #939;
        }
    </style>
</head>
<body>
    <div class="box">
        <ul>
            <li>手机</li>
            <li>电脑</li>
            <li>自行车</li>
        </ul>
        <div class="cont">
            <div class="phone">这是手机</div>
            <div class="computer">这是电脑</div>
            <div class="bike">这是自行车</div>
        </div>
    </div>
</body>
<script>
    // 分析：选项卡，点击按钮切换对应内容
    // 1. 选择元素
    // 2. 设置默认索引，添加默认样式
    // 3. 给每个元素添加索引
    // 4. 绑定事件
    // 6. 取消上一个显示样式
    // 5. 获取当前点击按钮的索引(非实际功能)
    // 7. 根据获取到的索引进行切换指定

    // 设计 & 编程
    class Tab {
        constructor() {
            // 属性====变量
            // 选择到的元素
            this.btns = document.querySelectorAll(".box li")
            this.conts = document.querySelectorAll(".box .cont>div");
            // 设置的默认索引
            this.index = 0;
            // 绑定事件
            this.setEvent();
            // 添加索引
            this.setIndex();
            // 添加默认样式
            this.setDefault();
        }
    }

    Tab.prototype.setEvent = function () {
        const that = this;
        for (let i = 0; i < this.btns.length; i++) {
            this.btns[i].onclick = function () {
                // 清除之前:that.clearPrev(that.index)
                that.btns[that.index].className = "";
                that.conts[that.index].style.display = "none";
                // 给当前添加:that.setActive(this.index)
                that.btns[this.index].className = "active";
                that.conts[this.index].style.display = "block";
                // 将本次索引设置为下一次的上一个:
                // that.changeIndex(this.index)
                that.index = this.index;
            }
        }
    }
    Tab.prototype.setIndex = function () {
        this.btns.forEach((val, idx) => {
            val.index = idx;
        })
    }
    Tab.prototype.setDefault = function () {
        this.btns[this.index].className = "active";
        this.conts[this.index].style.display = "block";
    }
    // Tab.prototype.clearPrev = function(prev){
    //     // prev
    // }
    // Tab.prototype.setActive = function(now){
    //     // now
    // }
    // Tab.prototype.changeIndex = function(now){
    //     // now
    // }

    new Tab();


</script>
</html>